import Vue from 'vue'
import App from './App.vue'
import router from './router'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import store from './store'
import 'font-awesome/css/font-awesome.min.css'

import {postRequest} from "./utils/api"; //封装好的方法 插件的形式引入
import {putRequest} from "./utils/api";
import {getRequest} from "./utils/api";
import {deleteRequest} from "./utils/api";
import { initMenu } from './utils/menus'
import { downloadRequest } from './utils/download'

Vue.config.productionTip = false
// 安装elementui 
// Vue.use(ElementUI)
// 很多地方都用到了size 所以加一个全局size 所以每次不用加size默认加size small
Vue.use(ElementUI,{size: 'small'});

// 插件形式使用
Vue.prototype.postRequest = postRequest; 
Vue.prototype.putRequest = putRequest;
Vue.prototype.getRequest = getRequest;
Vue.prototype.deleteRequest = deleteRequest;
Vue.prototype.downloadRequest = downloadRequest;
// 路由导航守卫  三个参数
// to:即将进入目标路由对象，
// from:Route:从当前导航正要离开的路由
//  next  简单来说没有next就不会跳到下一个路由
router.beforeEach((to,from,next)=>{ 
  // 判断用户是否登录。通过sessionStorage有没有登录的token信息
    if(window.sessionStorage.getItem("tokenStr")) {
      initMenu(router,store);
      if(!window.sessionStorage.getItem("user")) { // 判断用户信息是不是不存在
        return getRequest('/admin/info').then(resp => {
          if(resp){
            // 存入用户信息 resp存入sessionStorage里面
            window.sessionStorage.setItem("user",JSON.stringify(resp));
            next({...to, replace:true});
          }
        });
      }
      next();
    }else {
      if(to.path == '/') { // 如果没有登录，判断登录地址是不是登录页
        next(); // 是登录页就直接跳转
      }else {
         next('/?redirect=' + to.path); // 未登录bug 跳过登录输入里面的网址 跳转到对应页面  加?是传参
      }
    }
})

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')
